#include <algorithm>
#include <iostream>
using namespace std;

const int kMaxA = 2010;
const int kInf = 1e9;
bool rain[kMaxA];
int x[kMaxA], p[kMaxA], f[kMaxA][kMaxA];

void Renew(int& a, int b) {
  a = min(a, b);
}

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int a, n, m;
  cin >> a >> n >> m;
  for (int i = 0; i < n; i++) {
    int l, r;
    cin >> l >> r;
    for (; l < r; l++) {
      rain[l] = true;
    }
  }
  for (int i = 1; i <= m; i++) {
    cin >> x[i] >> p[i];
  }

  for (int i = 0; i <= a; i++) {
    fill(f[i], f[i] + m + 1, kInf);
  }
  f[0][0] = 0;

  for (int i = 0; i < a; i++) {
    for (int j = 1; j <= m; j++) {
      if (x[j] == i) {
        Renew(f[i][j], f[i][0]);
      }
    }

    if (!rain[i]) {
      Renew(f[i + 1][0], f[i][0]);
    }
    for (int j = 1; j <= m; j++) {
      if (f[i][j] == kInf) {
        continue;
      }
      Renew(f[i + 1][j], f[i][j] + p[j]);
      Renew(f[i + 1][0], f[i][j] + p[j]);
    }
  }
  cout << (f[a][0] == kInf ? -1 : f[a][0]) << "\n";
  return 0;
}